Секция [AddReg]
Секции типа [AddReg] содержат описание действий по внесению новых подразделов и/или параметров и их значений в Системный Реестр, а также действия по модификации значений уже существующих параметров.
Ссылки на секции данного типа могут присутствовать в секциях [DDInstall], [ClassInstall32] и секциях [ServiceInstall] (обозначенных ссылками из директив AddService в секциях [DDInstall.Services]). Кроме того, ссылка на [AddReg] может быть введена и из секций, описывающих установку интерфейса (для организации доступа к объекту устройства по идентификатору интерфейса), что в данной книге не рассматривается. В перечисленных типах секций ссылки на [AddReg] вводятся директивами AddReg. Конкретное имя секций типа [AddReg] зависит от разработчика inf-файла. Каждая запись внутри секции [AddReg] имеет вид
reg-root, [subkey], [value-name], [flag] , [value]
Здесь в поле reg-root следует ввести аббревиатуру одного из корневых разделов Системного Реестра, возможные значения которых перечислены в таблице 12.7. Эти значения указывают на корневые разделы, в чьих подразделах будут сделаны изменения. Поле subkey представляет наименование подраздела внутри указанного корневого раздела. Значении HKR не имеет конкретного, раз и навсегда определенного, значения. Его конечное значение в записях секции [AddReg] зависит от того, из какой секции была сделана ссылка на [AddReg].
Таблица 12.7. Аббревиатуры корневых разделов Системного Реестра
Значения | Описание | |
HKCR | HKEY_CLASSES_ROOT | |
HKCU | HKEY_CURRENT_USER | |
HKLM | HKEY_LOCAL_MACHINE | |
HKU | HKEY_USERS | |
HKR | Контекстный раздел Системного Реестра (то есть какой конкретно раздел Реестра будет модифицирован, зависит от того, в какой секции была сделана ссылка на секцию типа [AddReg]) |
Значение value-name обозначает имя параметра в модифицируемом подразделе subkey, который (параметр подраздела, то есть) будет добавлен или модифицирован.
Значение flag описывает тип данных, который должен быть сохранен в поле значения параметра данного модифицируемого подраздела Системного Реестра.
Возможные значения (из числа применимых в Windows 2000, XP и 2003), которые может принимать поле flag, перечисляются в таблице 12.8.
Таблица 12.8. Основные значение поля flag
в записях секции [AddReg]
Значение | Символьное имя | Описание |
0x00000 | FLG_ADDREG_TYPE_SZ | Строка символов, завершающаяся нулем (значение flag по умолчанию, если это поле в записи опущено) |
0x00001 | FLG_ADDREG_BINVALUETYPE | Бинарные данные |
0x00002 | FLG_ADDREG_NOCLOBBER | Не замещать существующее значение |
0x00004 | FLG_ADDREG_DELVALUE | Стереть подраздел или параметр |
0x00010 | FLG_ADDREG_KEYONLY | Создать подраздел, игнорировать параметр и его значение |
0x00020 | FLG_ADDREG_OVERWRITEONLY | Если параметр существует, заменить, иначе ничего не предпринимать |
0x10000 | FLG_ADDREG_TYPE_MULTI_SZ | Данные REG_MULTI_SZ (массив строк) |
0x00008 | FLG_ADDREG_APPEND | Присоединить к существующему массиву строк REG_MULTI_SZ. Применим только совместно с FLG_ADDREG_TYPE_MULTI_SZ |
0x20000 | FLG_ADDREG_TYPE_EXPAND_SZ | Данные типа REG_EXPAND_SZ |
0x10001 | FLG_ADDREG_TYPE_DWORD | Данные типа REG_DWORD |
0x20001 | FLG_ADDREG_TYPE_NONE | Данные REG_NONE |
[DeviceInstallSection] AddReg = DeviceAddRegSection
[DeviceAddRegSection] HKR,, ThisDriver, %REG_DWORD%, 1 HKR,, InstalledDrivers, %REG_MULTI_SZ%, Device0001
[Strings] ; расшифровка значений маркеров REG_SZ = 0x00000000 REG_MULTI_SZ = 0x00010000 REG_EXPAND_SZ = 0x00020000 REG_BINARY = 0x00000001 REG_DWORD = 0x00010001
Следует помнить, что в том случае, если в полях записей вводится значение, содержащее пробелы или другие специальные символы, то эту группу символов следует заключить в кавычки. Если же значение простое (пусть даже строка), то его заключать в кавычки не обязательно, например:
[MyDriver.Install] CopyFiles=. . .AddReg=MyDriver.AddReg
[MyDriver.AddReg] HKR,,DevLoader,,*ntkern HKR,,NTMPDriver,, MyDriver.sys ; (flag = FLG_ADDREG_TYPE_SZ)
что равносильно
HKR,,"NTMPDriver",,"MyDriver.sys"